#pragma once

typedef enum
{
    SC_SERVER,
    SC_CLIENT
} SC_TYPE;

typedef enum
{
    INVALID = -1,
    UI_MIN,
    UI_MAX,
    UI_RESTORE,
    UI_HIDE_SELF,
    UI_HIDE_OTHER,
    UI_HIDEHIDE_OTHER,
    UI_SHOW
} CtrlCmd;

extern "C"
{
    __declspec(dllimport) bool InitWG_S();
    __declspec(dllimport) bool InitWG_C();

    __declspec(dllimport) int  SetWGData(void* data, unsigned int count);
    __declspec(dllimport) int  GetWGData(void* data, unsigned int count);

    __declspec(dllimport) int  SetData(void* data, unsigned int size);
    __declspec(dllimport) int  GetData(void* data, unsigned int size);

    __declspec(dllimport) int  MsgWGPeek();

    __declspec(dllimport) void FreeWG_S();
    __declspec(dllimport) void FreeWG_C();

    __declspec(dllimport) bool SetHook();
    __declspec(dllimport) void UnHook();

    __declspec(dllimport) bool InitHook_S();
    __declspec(dllimport) bool InitHook_C();

    __declspec(dllimport) int  SetHookCtrlCmd(CtrlCmd ctrlCmd, SC_TYPE scType);
    __declspec(dllimport) int  GetHookCtrlCmd(CtrlCmd* ctrlCmd, SC_TYPE scType);
    __declspec(dllimport) int  MsgHookPeek(SC_TYPE scType);
    __declspec(dllimport) int SendHookTxt(const char* txt, int size, SC_TYPE scType);
    __declspec(dllimport) int RecvHookTxt(char* txt, int size, SC_TYPE scType);

    __declspec(dllimport) void FreeHook_S();
    __declspec(dllimport) void FreeHook_C();

    __declspec(dllimport) void Release();

    __declspec(dllimport) DWORD GetProccessPID(const char* processName);

    __declspec(dllimport) bool InitPathPlan_S();
    __declspec(dllimport) bool InitPathPlan_C();
    __declspec(dllimport) int SendPathPlanMessage(const char* txt, int size, const char* tarIP, short tarPort, SC_TYPE scType);
    __declspec(dllimport) int RecvPathPlanMessage(char* txt, int size, SC_TYPE scType);
    __declspec(dllimport) void FreePathPlan_S();
    __declspec(dllimport) void FreePathPlan_C();
}
